package org.footballmanager.pandafootball.system.service;

import org.footballmanager.pandafootball.system.domain.FootLottery;
import org.footballmanager.pandafootball.system.domain.FootUser;
import org.footballmanager.pandafootball.system.domain.JsonReturn;
import org.footballmanager.pandafootball.system.form.impl.FootLotterySearchForm;
import org.springframework.ui.Model;

import javax.servlet.http.HttpServletRequest;
import java.util.List;

public interface FootLotteryService extends BaseService<FootLottery> {
    /**
     * 重新计算白人碎片抽取时间
     *
     * @param userId  用户主键
     * @param isPay   是否付款
     * @param request 请求
     * @return json返回数据
     */
    JsonReturn reComputeWhiteDate(Long userId, boolean isPay, HttpServletRequest request);

    /**
     * 重新计算普通球星碎片抽取时间
     *
     * @param userId  用户主键
     * @param isPay   是否付款
     * @param request 请求
     * @return json返回数据
     */
    JsonReturn reComputeGreenDate(Long userId, boolean isPay, HttpServletRequest request);

    /**
     * 重新计算洲际球星碎片抽取时间
     *
     * @param userId  用户主键
     * @param isPay   是否付款
     * @param request 请求
     * @return json返回数据
     */
    JsonReturn reComputeBlueDate(Long userId, boolean isPay, HttpServletRequest request);

    /**
     * 重新计算超级球星碎片抽取时间
     *
     * @param userId  用户主键
     * @param isPay   是否付款
     * @param request 请求
     * @return json返回数据
     */
    JsonReturn reComputePurpleDate(Long userId, boolean isPay, HttpServletRequest request);

    /**
     * 重新计算顶级球星碎片抽取时间
     *
     * @param userId  用户主键
     * @param isPay   是否付款
     * @param request 请求
     * @return json返回数据
     */
    JsonReturn reComputeOrangeDate(Long userId, boolean isPay, HttpServletRequest request);

    /**
     * 根据用户主键查找碎片时间数据
     *
     * @param userId 用户主键
     * @return 碎片时间数据
     */
    FootLottery findLotteryByUserId(Long userId);

    /**
     * 新建用户的碎片时间信息
     *
     * @param user    用户
     * @param request 请求
     */
    void saveNewLottery(FootUser user, HttpServletRequest request);

    /**
     * 翻页方法
     *
     * @param footLotterySearchForm 条件
     * @return 列表
     */
    List<FootLottery> findall(FootLotterySearchForm footLotterySearchForm);

    /**
     * 查询
     *
     * @param entityname            实体类名
     * @param map                   参数
     * @param footLotterySearchForm 条件
     */
    void search(String entityname, Model map, FootLotterySearchForm footLotterySearchForm);

    /**
     * 根据用户主键删除对应碎片时间记录
     *
     * @param userId  用户主键
     * @param request 请求
     */
    void deleteByUserId(Long userId, HttpServletRequest request);
}
